#include "findsuccessdlg.h"
#include "ui_findsuccessdlg.h"
#include <QDir>
#include "applyfriend.h"
#include <memory>

/**
 * @brief FindSuccessDlg 类的构造函数，初始化对话框
 * @param parent 父窗口指针，默认为 nullptr
 */
FindSuccessDlg::FindSuccessDlg(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::FindSuccessDlg),
    _parent(parent)
{
    ui->setupUi(this);  // 设置 UI 界面
    // 设置对话框标题
    setWindowTitle("添加");
    // 隐藏对话框标题栏，使对话框外观更简洁
    setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
    this->setObjectName("FindSuccessDlg");  // 设置对话框对象名称

    // 获取当前应用程序的路径
    QString app_path = QCoreApplication::applicationDirPath();
    // 构建头像图片的路径
    QString pix_path = QDir::toNativeSeparators(app_path +
                                                QDir::separator() + "static" + QDir::separator() + "head_1.jpg");
    QPixmap head_pix(pix_path);  // 加载头像图片
    // 缩放头像图片以适应头像标签的大小
    head_pix = head_pix.scaled(ui->head_lb->size(),
                               Qt::KeepAspectRatio, Qt::SmoothTransformation);
    ui->head_lb->setPixmap(head_pix);  // 设置头像标签的图片

    // 设置添加好友按钮的状态样式
    ui->add_friend_btn->SetState("normal", "hover", "press");
    this->setModal(true);  // 设置对话框为模态对话框，阻塞其他窗口操作
}

/**
 * @brief FindSuccessDlg 类的析构函数，释放 UI 资源
 */
FindSuccessDlg::~FindSuccessDlg()
{
    delete ui;  // 释放 UI 界面指针
}

/**
 * @brief 设置搜索到的用户信息
 * @param si 指向 SearchInfo 对象的智能指针，包含用户信息
 */
void FindSuccessDlg::SetSearchInfo(std::shared_ptr<SearchInfo> si)
{
    ui->name_lb->setText(si->_name);  // 设置姓名标签的文本为搜索到的用户姓名
    qDebug()<<"icon is"<<si->_icon;
    QPixmap head_pix(si->_icon);  // 加载头像图片
    head_pix = head_pix.scaled(ui->head_lb->size(),
                               Qt::KeepAspectRatio, Qt::SmoothTransformation);
    ui->head_lb->setPixmap(head_pix);  // 设置头像标签的图片
    ui->head_lb->setScaledContents(true);
    _si = si;  // 存储搜索到的用户信息
}

/**
 * @brief 处理添加好友按钮的点击事件
 * 隐藏当前对话框，并弹出添加好友的申请界面
 */
void FindSuccessDlg::on_add_friend_btn_clicked()
{
    this->hide();  // 隐藏当前对话框

    // 弹出加好友界面
    auto applyFriend = new ApplyFriend(_parent);
    applyFriend->SetSearchInfo(_si);  // 设置添加好友申请界面的用户信息
    applyFriend->setModal(true);  // 设置添加好友申请界面为模态对话框
    applyFriend->show();  // 显示添加好友申请界面
}
